package com.example.liujie.hiero

import com.badlogic.gdx.Game
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.GL20
import com.badlogic.gdx.graphics.g2d.BitmapFont
import com.badlogic.gdx.graphics.g2d.SpriteBatch


class HieroGame : Game() {

    private var batch: SpriteBatch? = null

    // 位图字体
    private var bitmapFont: BitmapFont? = null

    override fun create() {
        // 创建 SpriteBatch
        batch = SpriteBatch()

        // 读取 bitmapfont.fnt 文件创建位图字体对象
        bitmapFont = BitmapFont(Gdx.files.internal("font/bitmapfont.fnt"))

        /*
         * 给位图字体设置颜色（RGBA）,
         *
         * 使用 hiero 创建位图字体文件时也可以设置字体颜色（默认为白色）, 这里设置的颜色和 hiero 中设置的字体颜色
         * 对最终显示的颜色会相互影响。如果在 hiero 中设置了白色（默认）, 则在这里通过 bitmapFont.setColor(...)
         * 设置的颜色就是最终显示的颜色（姑且可以简单地看做是 hiero 中设置了白色就不会影响到这里设置的颜色）。
         */
         bitmapFont?.setColor(1f, 0f, 0f, 1f)

        /*
         * 如果想改变显示文本的大小, 可以通过设置显示数据的缩放比实现
         */
         bitmapFont?.data?.setScale(2.0F);

        /*
         * 多行绘制时（字符串中有换行符）可以选择给显示数据设置行高
         */
         bitmapFont?.data?.setLineHeight(64.0F);
    }

    override fun render() {
        // 黑色清屏
        Gdx.gl.glClearColor(0f, 0f, 0f, 1f)
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)

        // 开始绘制
        batch!!.begin()

        /*
         * 绘制文本（创建位图字体文件时有输入过的字符才能被显示）,
         *
         * 注意: 这里的绘制坐标和绘制纹理时不同，绘制 BitmapFont 时的起点坐标在文本字符串的左上角
         */
        bitmapFont!!.draw(batch, "Hello BitmapFont!~", 10f, 100f)

        // 中英混合绘制文本, 支持换行符
        bitmapFont!!.draw(batch, "你好", 10f, 300f)

        // 绘制结束
        batch!!.end()
    }

    override fun dispose() {
        // 当应用退出时释放资源
        if (batch != null) {
            batch!!.dispose()
        }
        // BitmapFont 关联了一张图片纹理, 不再使用时需要释放资源
        if (bitmapFont != null) {
            bitmapFont!!.dispose()
        }
    }
}